package com.iprojectmanager.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.util.*;

/**
 * @author Alucard
 */
@Entity
//@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class IntegranteProyecto extends Usuario implements Serializable {
    //private static final long serialVersionUID = 1L;

    @OneToOne
    private Proyecto proyecto;

    @OneToMany(mappedBy="responsable")
    private Collection<Actividad> actividades;

    @ManyToMany(mappedBy="integrantes")
    @JoinTable(name="integrante_roles")
    private Collection<Rol> roles;

    public IntegranteProyecto()
    {}
    
    public IntegranteProyecto(String login,String password,String nombre,String apellidoPaterno,String apellidoMaterno,
                  String eMail,String telefono,String celular,String direccion)
    {
        super(login,password,nombre,apellidoPaterno,apellidoMaterno,eMail,telefono,celular,direccion);
    }

    public Proyecto getProyecto() {
        return proyecto;
    }

    public void setProyecto(Proyecto proyecto) {
        this.proyecto = proyecto;
    }

    public Collection<Rol> getRoles() {
        return roles;
    }

    public void setRoles(Collection<Rol> roles) {
        this.roles = roles;
    }

    public void removeRol(Rol rol)
    {
        this.roles.remove(rol);
    }

    public Collection<Actividad> getActividades() {
        return actividades;
    }

    public void setActividades(Collection<Actividad> actividades) {
        this.actividades = actividades;
    }

    public void removeActivity(Actividad act)
    {
        this.actividades.remove(act);
    }

    public boolean containsRol(String srol)
    {
        boolean flag = false;

            for(Rol rol : roles)
            {
                if(rol.getNombre().compareTo(srol) == 0)
                {
                    flag = true;
                }
            }

        return flag;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.getId() != null ? this.getId().hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof IntegranteProyecto)) {
            return false;
        }
        IntegranteProyecto other = (IntegranteProyecto) object;
        if ((this.getId() == null && other.getId() != null) || (this.getId() != null && !this.getId().equals(other.getId()))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.iprojectmanager.entities.IntegranteProyecto[id=" + this.getId() + "]";
    }

}
